package cn.sumpu.app.guoguojie.biz;

import java.util.List;
import java.util.Map;
import java.util.Set;

import cn.sumpu.app.guoguojie.constant.SearchType;

/**
 * 快速文本处理接口：全文检索，文本分词，关键词过滤。
 * 
 * @author nick
 * 
 */
public interface FastextBiz {
    /**
     * 根据违禁词库替换文本内容并返回。
     * 
     * @param text
     *            需要替换的文本
     * @return 替换后的文本
     */
    String antiReplace(String text);

    /**
     * 文本分词。
     * 
     * @param text
     *            需要分词的文本
     * @return 分词集合
     */
    List<String> analyze(String text);

    /**
     * 创建全量索引。
     */
    void buildIndex();

    /**
     * 增量更新索引。
     */
    void refreshIndex();

    /**
     * 根据关键字检索。
     * 
     * @param searchType
     *            检索类型
     * 
     * @param keywords
     *            检索关键字
     * @param isPart
     *            是否对检索关键字进行分词（true-分词，false-不分词）
     * @return 检索到的标识符集合
     */
    Set<String> search(SearchType type, String keywords, boolean isPart);

    /**
     * 根据关键字检索。
     * 
     * @param searchType
     *            检索类型
     * 
     * @param keywordList
     *            检索关键字列表
     * @return 检索到的标识符集合，如果返回null说明搜索不到结果
     */
    Set<String> search(SearchType type, List<Map<String, Object>> keywordList);

}
